//
// Created by nuo on 2021/11/18.
//
#pragma once
#ifndef SRC_MMUSE_H
#define SRC_MMUSE_H

#include <eigen3/Eigen/Dense>

//通过建立结构体，可直观的得到每个数据的float类型数据及其对应的4字节二进制数据
typedef union {
    unsigned char cvalue[4];
    double fvalue;
}double_union;

/*
 * 使用下面三个函数时，会有multiple definition of *** 的错误，暂时把函数写在class中，待解决。。。
 * */
////浮点型 转 四字节byte
//void float2bytes(float p,unsigned char *bytes)
//{
//    // unsigned char *pchar = (unsigned char*)&p;
//    auto *pchar = (unsigned char*)&p;
//    for(int i=0;i < sizeof(float);i++)
//    {
//        *bytes = *pchar;
//        pchar++;
//        bytes++;
//    }
//}
////四字节byte 转 float
//float bytes2float(const unsigned char *bytes)
//{
//    return *((float*)bytes);//强制转换
//}
////欧拉角转四元数
//Eigen::Quaternionf Euler2Quaternionf(float eluer_z, float eluer_y, float eluer_x){
//    Eigen::Quaternionf q = Eigen::AngleAxisf (eluer_z, ::Eigen::Vector3f::UnitZ()) *
//                           Eigen::AngleAxisf(eluer_y, ::Eigen::Vector3f::UnitY()) *
//                           Eigen::AngleAxisf(eluer_x, ::Eigen::Vector3f::UnitX());
//    return q;
//}



#endif //SRC_MMUSE_H
